package main

import (
	"fmt"
	"reflect"
)

func main() {
	var a *int
	fmt.Println("var a *int:", reflect.ValueOf(a).IsNil())  // out: true

	fmt.Println("nil:", reflect.ValueOf(nil).IsValid())  // out: false
	fmt.Println("(*int)(nil):", reflect.ValueOf((*int)(nil)).Elem().IsValid() )  // out: false

	s := struct {}{}
	fmt.Println("不存在的结构体成员：", reflect.ValueOf(s).FieldByName("")) // out: false
	fmt.Println("不存在的结构体方法：", reflect.ValueOf(s).MethodByName("").IsValid()) // out:false

	m := map[int]int{}
	fmt.Println("不存在的键", reflect.ValueOf(m).MapIndex(reflect.ValueOf(3)).IsValid())




}
